#include "client.h"
#include <QJsonObject>
#include <QJsonDocument>
#include <QJsonParseError>

Client::Client(QWidget *parent) : QWidget(parent)
{
    connect(&client, &QTcpSocket::readyRead, this, &Client::handleReadyRead);
}

void Client::sendposition(int row, int col, Role role)
{
    //创建JSON对象
    QJsonObject jsonObj;
    jsonObj["src_account"]="222";
    jsonObj["dst_account"]="111";
    jsonObj["row"]=row;
    jsonObj["col"]=col;
    jsonObj["role"]=role;

    //将JSON对象转换为字符串
    QJsonDocument jsonDoc(jsonObj);
    QString jsonstr=jsonDoc.toJson(QJsonDocument::Indented);

    client.write(jsonstr.toUtf8());
}

void Client::recvpositon()
{
/*
recvpositon() 的职责是作为客户端读取数据的入口，
实际的读取和处理逻辑由 handleReadyRead() 完成
*/
}

void Client::conserver(const QString &ip, int port)
{
    client.connectToHost(ip,port);
}

QJsonObject Client::returnjsonobj()
{
    return  m_jsonObj;
}

void Client::handleReadyRead()
{
    //读出所有缓冲区中可读数据
    QByteArray content=client.readAll();
    QString jsonstr = QString::fromUtf8(content);
    qDebug()<<jsonstr<<endl;
    QJsonParseError parseError;
    //解析JSON字符串
    QJsonDocument jsonDoc=QJsonDocument::fromJson(jsonstr.toUtf8(),&parseError);
    if (parseError.error != QJsonParseError::NoError)
    {
            qDebug() << "解析失败:" << parseError.errorString();
    }
    content.clear();
    QJsonObject jsonObject = jsonDoc.object();
    m_jsonObj=jsonObject;
}


